package com.zt.service;

import com.zt.dto.LoginRequest;
import com.zt.dto.UpdatePasswordRequest;
import com.zt.entity.Result;
import com.zt.pojo.Users;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* @author 洪
* @description 针对表【users(用户基础信息表)】的数据库操作Service
* @createDate 2025-04-10 09:58:53
*/
public interface UsersService extends IService<Users> {
    /**
     * 获取验证码
     * @param phone 手机号
     * @return 结果
     */
    Result getCode(String phone);

    /**
     * 用户登录，使用双Token机制
     * @param loginRequest 登录请求参数，包含手机号和验证码
     * @return 返回包含accessToken和refreshToken的结果
     */
    Result login(LoginRequest loginRequest);
    
    /**
     * 刷新Token
     * @param refreshToken 刷新令牌
     * @return 返回新的accessToken
     */
    Result refreshToken(String refreshToken);

    Result getUserInfo(Long userId);


    Result getBanner();
    
    /**
     * 更新用户会员状态
     * @param userId 用户ID
     * @param membershipType 会员类型（1-普通会员，2-SVIP会员）
     * @return 是否更新成功
     */
    boolean updateUserMembershipStatus(Long userId, Integer membershipType);
    
    /**
     * 更新用户会员状态，指定会员有效天数
     * @param userId 用户ID
     * @param membershipLevel 会员级别
     * @param days 会员有效期天数
     * @return 是否更新成功
     */
    boolean updateUserMembershipStatus(Long userId, Integer membershipLevel, int days);
    
    /**
     * 修改用户角色
     * @param userId 用户ID
     * @param role 角色ID（1-学生，2-教师，3-管理员）
     * @return 操作结果
     */
    Result updateUserRole(Integer userId, Integer role);

    /**
     * 检查用户是否已设置密码
     * @param userId 用户ID
     * @return 返回用户密码状态
     */
    Result checkUserPassword(Long userId);

    /**
     * 修改用户密码
     * @param updatePasswordRequest 修改密码请求参数，包含手机号、验证码和新密码
     * @return 操作结果
     */
    Result updatePassword(UpdatePasswordRequest updatePasswordRequest);
}
